# 8.Swift字符串

# 字符串的介绍

  • 字符串在开发中使用得非常频繁
  • OC和Swift中字符串的区别
    • 在OC中字符串类型是NSString,在Swift中字符串类型是String
    • OC中字符串@"",Swift中字符串""
  • 使用 String 的原因
    • String 是一个结构体,性能更高
    • NSString 是一个 OC 对象,性能略差
    • String 支持直接遍历

# 字符的定义

  • 定义不可变字符串
let str = "hello Objective-C"
  • 定义可变字符串
var str = "hello Swift"
  • 多行字符串
"""
静夜思
作者:李白
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
"""
  • Swift 5.0 新推出的

    Raw String
    
    • Swift 5.0 对字符串增加了一个新特性,使用 # 包裹字符串
    • 假如要输出:"字符串中有\转义字符反斜杠\ "
//5.0之前
let str = "字符串中有\\转义字符反斜杠\\"
print(str)
//5.0 
//如果字符串声明被 # 号包裹,\ 不需要转义
let str = #"字符串中有\转义字符反斜杠\"#
print(str)

//假如字符串中有 # 怎么办?用两个#包裹字符串
let str2 = ##"字符串中有#转义字符反斜杠\"##
print(str2)

# 字符串的常用操作

  • 长度
let str = "12345678"
let len2 = str.count  //8
let len3 = (str as NSString).length  //8
  • 拼接
    • +号
    • append
let str1 = "abc" + "cde"
var str = "abc"
str.append("cde")
  • 遍历
let str = "abcdefg"
for char in str {
    print(char)
}
---------------------
let str = "abcdefg"
for (index, value) in str.enumerated() {
    print("\(index) --- \(value)")
}
  • 大写或小写
let str = "abcdefg"
print(str.lowercased())  //全部小写
print(str.uppercased())  //全部大写
  • 含有字符串
let str = "abcdefg"
print(str.contains("cd"))   //true
print(str.contains("c"))    //true
print(str.contains("o"))    //false
  • 串分割
import Foundation
let str = "abcdefg$$aaaa$$bbbb$$ccc"
let desc = str.components(separatedBy: "$$")
for item in desc {
    print(item)
}
  • 替换
import Foundation
let str = "abcdefg$$aaaa$$bbbb$$ccc"
let dest11 = str.replacingOccurrences(of: "$$", with: "**")
print(dest11)
  • 子串
let str = "Hello World"
//截取某字符串的前5个字符串
let sub1 = str.prefix(5)
//截取某字符串的后5个字符串
let str1 = str.suffix(5)

//也可以换种写法
let index2 = str.index(str.endIndex, offsetBy: -5)
let sub2 = str[index2..<str.endIndex]
//截取某字符串的第3个字符到第6个字符范围的字符串
let index3 = str.index(str.startIndex, offsetBy: 3)
let sub3 = str[str.startIndex..<index3]

let index4: String.Index = str.index(str.endIndex, offsetBy: -3)

//从某个位置开始 到某个位置结束
let sub4 = str[index3..<index4]
Last Updated: 2/22/2020, 3:21:49 PM